package com.my.code;

public class TestInteger {
    public static void main(String[] args) {
        int i = 0b11011010;// i = 218
        System.out.println("i = " + i);
        System.out.println("前导0有 " + Integer.numberOfLeadingZeros(i));//计算i的二进制位前面有多少个0
        System.out.println("后导0有 " + Integer.numberOfTrailingZeros(i));//计算i的二进制位末尾多少个0

        //其二进制最高位1的权值
        System.out.println("小于且最接近它的一个2的n次幂 " + Integer.highestOneBit(i));//128

        //返回其二进制最低位1的权值
        System.out.println("最低位1的权值 "+Integer.lowestOneBit(i));//2

        System.out.println("二进制位有多少个1 "+Integer.bitCount(i));

        System.out.println(Integer.toBinaryString(Integer.MAX_VALUE));//二进制是1加31个0
        System.out.println(Integer.toBinaryString(Integer.MIN_VALUE));//二进制是31个1

        //相当于二进制位整体向左移动8位，如果左侧到最高位了，从右侧转回来
        System.out.println(Integer.toBinaryString(Integer.rotateLeft(i, 8)));
        //相当于二进制位整体向右移动8位，如果右侧到最低位了，从左侧转回来
        System.out.println(Integer.toBinaryString(Integer.rotateRight(i, 8)));
    }
}
